perm filename RUTGER.BUG[CMP,LSP] blob sn#229149 filedate 1976-07-31 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00001 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 ENDMK
CāŠ—;
āˆ‚31-JUL-76  1142	FTP:LEFAIVRE at RUTGERS-10	BUGS IN LISP 1.6 COMPILER   
Date: 31 Jul 1976 (Saturday) 1442-Est
From: LEFAIVRE at RUTGERS-10
Subject: BUGS IN LISP 1.6 COMPILER
To:   DIFFIE at SU-AI

Whit-

I have no idea who (if anyone) is currently responsible for the LISP
compiler, so I'm sending this to you since your name is on the most
recent manual I've seen.  Would you please pass this on to the appropriate
person if you are not he.

I'm making a series of improvements to the UCI LISP system when I can
find the time, including an INTERLISP-like prettyprint package, an "octal
point" (Q) to get rid of the BASE/IBASE problem, a generalized CATCH/THROW
facility, and a number of other (mostly minor) changes and additions.  One
change I recently made involved making ERRSETs compile in-line, getting
rid of all of those damn SUBFUNs and their associated special vars.  It
works fine, but while fooling around with the compiler I came across a
bug having to do with special vars being bound by nested internal lambdas.
It is typified by code like the following:

	(DE BUGGY NIL
		  ((LAMBDA (L A) (FUNC) L)
		   L
		   ((LAMBDA (L) (FUNC) (CAR L)) L)))

In addition to some extra pushes and pops, L is referenced incorrectly
by both lambda exprs.  This is evidently an old bug, and also occurs when
compiling the UCI LISP editor function EDIT*.

My question: has any further debugging been done on the compiler in the
last few years (i.e., since the UCI group grabbed the compiler)?  In
particular, has this bug been fixed?  If so, I would sure like to get
a list of the fixes.

Thanks for your help.

-Rick LeFaivre